package com.elitesland.security;

import javax.servlet.ServletRequest;

/**
 * <pre>
 * 多种登录方式统一信息提取接口
 * </pre>
 *
 * @author Mir
 * @date 2020/6/16
 */
public interface LoginPostProcessor {
    /**
     * 从请求查询参数中，获取登录类型，表单还是JSON
     *
     * @return 登录类型枚举值
     */
    LoginTypeEnum getLoginType();

    /**
     * 从请求中获取登录用户账号
     *
     * @param request 请求对象
     * @return 登录用户账号
     */
    String obtainsUsername(ServletRequest request);

    /**
     * 从请求中获取登录密码
     *
     * @param request 请求对象
     * @return 登录密码
     */
    String obtainPassword(ServletRequest request);

    /**
     * 从请求中获取验证码
     *
     * @param request 请求对象
     * @return 验证码字符串
     */
    String obtainCaptcha(ServletRequest request);

    /**
     * 从请求中获取验证码缓存UID
     *
     * @param request 请求对象
     * @return 验证码缓存UID
     */
    String obtainCapUid(ServletRequest request);
}
